#lang racket

;; Defines tests for PairElimination and write methods
;; By Theresa Wellington

(require "Output.scm")
(require "PairElimination.scm")
(require "PossibilityMatrix.scm")

(provide pairEliminationRowsTest)


;; test input
(define testBoard 
  (vector
   (vector 0 0 8 0 0 0 1 5 0)
   (vector 0 0 0 0 0 1 8 0 0)
   (vector 3 0 5 4 0 0 0 0 9)
   (vector 5 0 0 0 0 9 0 0 0)
   (vector 0 9 0 2 3 4 0 7 0)
   (vector 0 0 0 1 0 0 0 0 8)
   (vector 4 0 0 0 0 5 9 0 1)
   (vector 0 0 6 7 0 0 0 0 0)
   (vector 0 5 3 0 0 0 2 0 0)))


(define possibilityMatrixTest
  (makevectorbase 9 #t))

(define possibilityMatrixTest2
  (makevectorbase 9 #f))

(define possibilityMatrixTest3
  (setpossibilitiesinitial testBoard possibilityMatrixTest 0 0))

;; test posvector for row pair elim
(define possibilityMatrix
  (vector
   (vector
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #f #f #f #f #t #f #f #f #t #f)
    (vector #f #f #f #f #t #f #f #f #t #f)
    (vector #t #t #t #t #t #t #t #t #t #f)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t))
   (vector
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t))
   (vector
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #f #f #f #f #f #f #f #t #f)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #f #f #f #f #f #f #f #t #f))
   (vector
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t))
   (vector
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t))
   (vector
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t))
   (vector
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t))
   (vector
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t))
   (vector
    (vector #f #f #f #f #t #t #f #f #f #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #t #t #t #t #t #t #t #t #t #t)
    (vector #f #f #f #f #t #t #f #f #f #t)
    (vector #t #t #t #t #t #t #t #t #t #t))))



;; actual tests

;;(define writePossibilitiesTest (writePossibilityMatrix possibilityMatrixTest3))

;;(define writeBoardTest (writeMatrix testBoard))

 (define pairEliminationRowsTest 
   (lambda  () 
     (writePossibilityMatrix possibilityMatrix)
     (pairEliminationRows possibilityMatrix 0)
     (newline)
     (writePossibilityMatrix possibilityMatrix)))